技術文章
技術問答
iT 徵才
聊天室
2026 鐵人賽
登入/註冊
文章
問答
Tag
邦友
鐵人賽
搜尋
2023 iThome 鐵人賽
DAY
5
1
AI & Data
從 Airflow 走到 dbt 的 30 天
系列 第
5
篇
Day 5: How dbt models actually works?
15th鐵人賽
chorsengs
團隊
dbt 和 dbt 以外有趣的事
2023-09-20 23:28:13
1161 瀏覽
分享至
分析 dbt model 的核心價值
承接上文,從上圖可以發現:dbt 的本質:
架構模組化:透過大量的 view (stage、intermediate),來將 transform 階段做階層化的整理;
成本最小化:最後一個階段才將表格的內容實體化(materialized as table)
透過視覺化的整理,analytic engineers 自然可以清楚察資料在其中變化的脈絡,並在調整 / 新增 pipeline 的過程中更加得心應手。
各個階段詳細說明
讓我們進一步展開昨天的幾個階段,來詳細說明運作的過程,以及背後的機制。
source(view):
定義:資料來源,完全不做運算處理,只做 .yml 的設定處理建立 view,讓 stage 階段能順利吃到資料。
機制:在稍後我們建立 test 的時候,將 source 與 stage 階段區分開來是重要的 —— 究竟是對方傳輸資料過來的時候,就不符合規範?還是 stage 進行的 data pre-processing 時發生了錯誤 —— 換句話說,只要這兩件事對 Data Engineers 而言,需要被區分成不同的階段來進行對策思考,那麼為了降低認知負荷,我們就有將這兩階段做差異區分的價值。
stage(view):
定義:資料來源,通常會做基礎的 1 對 1 運算處理
機制:在 staging 階段,我們可以清晰的看到外部的資料是如何進入 lakehouse 的;以均一為例,我們的資料大致來自 GA4 Analytics / Backend batching / Static Data / Gov Data 這四種 source,因此也會在 stage 的階段,對不同的資料進行處理。例如,從後端傳入的資料,可能需要做許多 null 值、異常大的值等等,將後端特殊化的處理還原的手法;爬蟲政府官網的資料,也需要做一定的字元清理。
intermediate(view):
定義:做複雜的 join / aggregation / analytic functions
機制:在 intermediate 階段,我們通常會用 plain English 來作為資料的名稱,例如:int_class_id_decoded_from_studentlist_keys / int_class_info_joined_by_class_id,其實跟我們之前在談 CTE 的 naming conventions 規則如出一轍——如何讓人一目了然,就如何處理。在這個階段,我們則會進一步進行複雜的運算。以 decode 為例,我們將 BigQuery 中的 safety-code-64 透過 sql 還原成 datastore-id(背後是用了 macro 的機制,之後介紹),這樣才有辦法後續用這個 id 來執行 join table 的大表事前處理。
留言
追蹤
檢舉
上一篇
Day 4: LEGO, a metaphor of views managed by dbt
下一篇
Day 6: How dbt models actually works? (2/2)
系列文
從 Airflow 走到 dbt 的 30 天
共
9
篇
目錄
RSS系列文
訂閱系列文
8
人訂閱
5
Day 5: How dbt models actually works?
6
Day 6: How dbt models actually works? (2/2)
7
Day 7: Very Unique MODEL, Semantic Layer
8
Day 8: Very Unique MODEL, Semantic Layer (2/n)
9
Day 9: 一些碎碎念的插播
完整目錄
熱門推薦
{{ item.subject }}
{{ item.channelVendor }}
|
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
902
組
團體組數
37
組
累計文章數
19837
篇
完賽人數
528
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
17th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
linux
windows server
css
react
熱門問題
Seeed XIAO ESP32-S3 透過 UART (921600) 無法發送 AT 指令到 Grove Vision AI V2 (Himax WE2)
Windows XP作業系統,程式存取SQL SERVER 2025失敗
SAP B1 如何將"自定義表格"匯出並且匯入到另一個資料庫
webview cab 封包檔
熱門回答
Windows XP作業系統,程式存取SQL SERVER 2025失敗
SAP B1 如何將"自定義表格"匯出並且匯入到另一個資料庫
熱門文章
[AI Agent 架構筆記] 記憶系統真正的敵人不是忘記,而是錯誤地一直記得——我做 AI 長期記憶的結構化設計與翻車實錄
[AI Agent 架構筆記] 我不信任 AI 的自律,所以把「限制」寫死在資料庫裡
AI Agent 時代的下一個問題:當第 101 次決策出錯時,誰來負責?
被回答了,還是被消失了?
ERP 該為哪一代前端技術下注?
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}